Skip to content

fix(deps): bump usd-core to >=26.5 for multithreaded collider crash fix#7

Closed
pv-nvidia wants to merge 23 commits into
developfrom
pv/usd-2605-fix
Closed

fix(deps): bump usd-core to >=26.5 for multithreaded collider crash fix#7
pv-nvidia wants to merge 23 commits into
developfrom
pv/usd-2605-fix

Conversation

@pv-nvidia

Copy link
Copy Markdown
Owner

Description

Bumps the kit-less usd-core pin from >=25.11,<26.0 to >=26.5,<27.0.

OpenUSD 26.05 fixes a race in UsdPhysicsParsingUtility
(LoadUsdPhysicsFromRange_FinalizeCollisionDescs) that corrupts the heap
(malloc_consolidate(): invalid chunk size / double free) when parsing a
single rigid body with many mesh colliders beneath it — e.g. the H2 robot on
the Newton tablecloth workload — before the first simulation step.

  • Fix: OpenUSD PR Isaac-Velocity-Flat-Spot-v0 isaac-sim/IsaacLab#4002 / commit 060715f ("[usdPhysics] fix for a multithreaded
    crash if one rigidbody has multiple colliders beneath"), by Paul Molodowitch.
    First released in OpenUSD 26.05 (= usd-core 26.5). 26.03 was tagged 2 days
    before the fix, so it does not contain it.
  • Empirically verified: usd-core 25.11 / 26.3 crash; 26.5 clean (400
    multithreaded parses, 0 crashes). Interim workaround PXR_WORK_THREAD_LIMIT=1
    is not 100% reliable.

⚠️ Known blocker (this is a CI experiment / draft)

The previous <26.0 cap was added by @AntoineRichard in isaac-sim#6165 because the Isaac
Sim runtime stack loads USD 25.x internals
, so a kit-less usd-core 26.5 causes
an ABI mismatch. This PR therefore likely cannot pass install/smoke CI until
the Isaac Sim runtime's bundled OpenUSD is uplifted to ≥26.05 (or PR isaac-sim#4002 is
backported). Opened as a draft to surface exactly what CI does with the bump.

cc @AntoineRichard @kellyguo11 @ooctipus

Type of change

  • Bug fix (dependency / ABI)

Checklist

  • Updated the metadata guard test (test_source_package_metadata.py)
  • Added a changelog fragment
  • Pre-commit hooks pass

@github-actions github-actions Bot added bug Something isn't working isaac-lab labels Jun 30, 2026
ooctipus and others added 23 commits July 2, 2026 13:38
# Description

Depth-only RTX cameras enable the global
`/rtx/sdg/force/disableColorRender` optimization. The renderer already
disables that optimization when `/isaaclab/has_gui` is true, but a
visualizer refactor removed the last writer of that GUI setting. As a
result, the setting remained unset and adding a depth-only camera could
black out the GUI viewport.

This change publishes `/isaaclab/has_gui` from `AppLauncher` before
`SimulationContext`, PhysX, and RTX renderer initialization. It
preserves the historical semantics: a local window, livestream, or XR
session counts as a GUI. Truly headless camera runs retain the
depth-only rendering optimization.

Regression coverage verifies the launcher state matrix and both GUI and
headless depth-only renderer behavior.

No additional dependencies are required.

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## Screenshots

Not applicable. The behavior is covered by focused setting and renderer
contract tests.

## Testing

- `./isaaclab.sh -p -m pytest
source/isaaclab/test/app/test_kwarg_launch.py::test_load_extensions_publishes_has_gui_setting
source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_contract.py
-q` (7 passed)
- `pre-commit run --files source/isaaclab/test/app/test_kwarg_launch.py
source/isaaclab/isaaclab/app/app_launcher.py
source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_contract.py
source/isaaclab/changelog.d/zhengyuz-fix-depth-camera-viewport.rst
source/isaaclab_physx/changelog.d/fix-depth-camera-viewport-color-rendering.skip`
- `python3 tools/changelog/cli.py check develop`

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have run the pre-commit checks on every changed file
- [x] Documentation changes are not required for this internal behavior
fix
- [x] My changes generate no new warnings
- [x] I have added tests that prove the fix is effective
- [x] I have added changelog fragments for every touched package
- [x] My name is already present in `CONTRIBUTORS.md`
Bumped packages:
- isaaclab: 8.0.2 → 8.0.3
- isaaclab_ov: 0.5.3 → 0.5.4
- isaaclab_ovphysx: 5.0.1 → 6.0.0
- isaaclab_rl: 0.6.2 → 0.7.0
- isaaclab_tasks: 8.1.2 → 8.1.3
## DR Legs closed-loop hold-pose and walk task

Depends on newton-physics/newton#3220
 
Simplified many things leaving the pure DR Legs task here.
 
- Adds the Disney DR Legs closed-loop biped (Kamino solver) and a
`Isaac-DrLegs-HoldPose-v0` hold-pose task as well as
`Isaac-DrLegs-Walk-v0` walking task.
- Uses the `ArticulationView` 
- Fixes Kamino environment resets directly in the kamion_manager
- DR Legs USD is loaded from newton-assets

---------

Co-authored-by: Ruben Grandia <ruben.grandia@disney.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…c-sim#6212)

# Description

REQ-12: Support capturing images from the visualizer when running
headless such that we can capture the full or subset of environments
during training to observe progress through frameworks such as
tensorboard or wandb

This feature exports per step frames from simulation from full or subset
of the environments.


Fixes # (OMPE-78691)

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->


https://github.com/isaac-sim/IsaacLab/blob/0316aea144ff1d159159db182a28319bf56be186/source/isaaclab_tasks/test/rendering_test_utils.py#L553

I save the images in the same way as the tests compare goldens moving
this shared logic into utils/images.py

## Type of change

- New feature (non-breaking change which adds functionality)

## Screenshots

<img width="3833" height="1869" alt="image"
src="https://github.com/user-attachments/assets/48ac9e8d-7cd8-4bb3-999f-754b595e5f76"
/>


<!--
Example:

| Before | After |
| ------ | ----- |
| _gif/png before_ | _gif/png after_ |

To upload images to a PR -- simply drag and drop an image while in edit
mode and it should upload the image directly. You can then paste that
source into the above before/after sections.
-->

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

<!--
As you go through the checklist above, you can mark something as done by
putting an x character in it

For example,
- [x] I have done this task
- [ ] I have not done this task
-->

---------

Signed-off-by: Matthew Taylor <mataylor@nvidia.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
# Description

Adds the smoke test marker for annotating smoke tests which should
always be run in the pipeline

- Register a shared `smoke` pytest marker in the install-CI `pytest.ini`
and `conftest.py`.
- Tag existing installation, contrib-environment, and rigid/deformable
coupling smoke tests with `@pytest.mark.smoke`.
- Lets core installation, task, and RL smoke functionality checks be
selected as a group via `-m smoke`.

Tests named with `_smoke` have been marked:

Other tests can be marked respectively if they should be classified as
smoke.

Fixes # (issue)

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

## Type of change

- New feature (non-breaking change which adds functionality)

## Screenshots

Please attach before and after screenshots of the change if applicable.

<!--
Example:

| Before | After |
| ------ | ----- |
| _gif/png before_ | _gif/png after_ |

To upload images to a PR -- simply drag and drop an image while in edit
mode and it should upload the image directly. You can then paste that
source into the above before/after sections.
-->

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

<!--
As you go through the checklist above, you can mark something as done by
putting an x character in it

For example,
- [x] I have done this task
- [ ] I have not done this task
-->
## Description

Converts **rigid-body physics materials** to the single-namespace
"fragment" model already used by the rigid-body / collision / mass /
mesh / tendon / joint-drive / articulation families. Additive and
backward-compatible — the legacy inheritance cfgs remain as deprecated
shims.

The one material-specific twist vs. the schema families: a physics
material is **spawned as its own `UsdShade.Material` prim and bound**
(not applied onto the body prim). So the family writer both spawns the
prim + applies the anchor *and* dispatches the fragment list.

### Added
- **Core** (`isaaclab.sim.spawners.materials`):
- `RigidBodyMaterialFragment` — marker base typing the
`physics_material` slot.
- `UsdPhysicsRigidBodyMaterialCfg` — solver-common `physics:*`
friction/restitution (anchor `UsdPhysics.MaterialAPI`).
- `spawn_rigid_body_material_from_fragments(prim_path, fragments,
stage)` — spawns the `UsdShade.Material` prim, applies the `MaterialAPI`
anchor, dispatches each fragment's `func` (default `apply_namespaced`).
- `spawn_physics_material(prim_path, material, stage)` — slot
dispatcher: fragment list → fragment writer, else legacy cfg via its own
`func`.
- **PhysX** (`isaaclab_physx.sim.spawners.materials`):
- `PhysxMaterialCfg` — single-namespace `physxMaterial:*`
(`PhysxMaterialAPI`): compliant-contact spring + combine-mode tokens.

### Changed
- Spawner `physics_material` slots (`shapes`, `meshes`, `from_files`)
now accept `RigidBodyMaterialFragment | list[...]` in addition to the
legacy material cfg; consume sites route through
`spawn_physics_material`. **Legacy single-cfg path unchanged.**

### Scope
- **Rigid-body materials only.** Deformable-body materials are deferred
— they pair with the deferred deformable-body family (multi-inherited
OmniPhysics + PhysX material APIs).

## Tests
- New `test_material_fragments.py` (6): fragment metadata;
spawn-from-fragments composes `physics:*` + `physxMaterial:*` with the
`MaterialAPI` anchor + `PhysxMaterialAPI`; single-fragment;
partial-update (None left unauthored); slot dispatcher handles both
fragment and legacy forms.
- Regression: existing `test_spawn_materials.py` (6) and
`test_spawn_shapes.py` (12) pass — legacy path intact.

## Checklist
- [x] Ran `./isaaclab.sh --format`
- [x] Added changelog fragments (core + physx, minor)

---------

Co-authored-by: Octi Zhang <zhengyuz@nvidia.com>
Bumped packages:
- isaaclab: 8.0.3 → 8.1.0
- isaaclab_assets: 0.4.0 → 0.4.1
- isaaclab_newton: 1.5.1 → 1.6.0
- isaaclab_physx: 2.6.2 → 2.7.0
- isaaclab_tasks: 8.1.3 → 8.1.4
## Summary
- use `get_all_matching_child_prims` when activating PhysX contact
report schemas
- continue matching rigid descendants under nested rigid-body trees
instead of stopping at the first rigid body
- add regression coverage for nested rigid bodies receiving
`PhysxContactReportAPI`

## Testing
- ./isaaclab.sh -p -m pytest source/isaaclab/test/sim/test_schemas.py -k
activate_contact_sensors_nested_rigid_bodies -q
- ./isaaclab.sh -p -m py_compile
source/isaaclab/isaaclab/sim/schemas/schemas.py
source/isaaclab/test/sim/test_schemas.py

## Note
- Attempted `./isaaclab.sh -p -m pytest
source/isaaclab_physx/test/sensors/test_contact_sensor.py -k
contact_sensor_threshold -q`, but collection failed because `flaky` is
not installed in the local environment.
Bumped packages:
- isaaclab: 8.1.0 → 8.1.1
isaac-sim#6317)

# Description

Added 'motion_vectors' data type support to OVRTX renderer integration

Maps the "motion_vectors" data type to OVRTX's TargetMotionSD render
var, mirroring the AOV used by Isaac RTX/Replicator's built-in
motion_vectors annotator. Extracts only the first two (u, v) channels
via a dedicated kernel.

Also extends the shared rendering-correctness test utilities to cover
motion_vectors across cartpole, shadow hand, and dexsuite kuka allegro
for both kit (isaacsim_rtx) and kitless (ovrtx) renderers, including a
normalization path for the 2-channel output and an optional
zero/non-zero action step so motion vectors have real inter-frame motion
to encode before the first captured frame.

## Type of change

- New feature (non-breaking change which adds functionality)
- Documentation update

## Screenshots

See golden images as part of changes.

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
# Description

Several methods in OVRTXRenderer (scene/camera/object binding setup,
scene partition writes, and render) caught broad exceptions and only
logged a warning, letting simulation or training continue on a renderer
failure that should have stopped it. Let these propagate so callers can
decide how to handle the failure, matching the existing pattern already
used by _clone_environments.

Object binding setup for Newton now explicitly skips when no
SimulationContext is active yet, rather than crashing on an assertion
deep in NewtonManager.

## Type of change

- Refactor to fail hard on real errors

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------

Signed-off-by: Richard Lei <rilei@nvidia.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Bumped packages:
- isaaclab: 8.1.1 → 8.1.2
- isaaclab_ov: 0.5.4 → 0.6.0
- isaaclab_ovphysx: 6.0.0 → 6.1.0
- isaaclab_tasks: 8.1.4 → 8.1.5
…m#6348)

# Description

Since isaac-sim#6314 landed, `test-isaaclab-ov` and
`test-rendering-correctness-kitless` are silently skipped on every fork
PR: the job-level `if:` conditions require a same-repository PR (or
`develop`) whenever `ovphysx_wheelhouse_resource` is configured — which
it now always is. Fork contributors and team members working from forks
have had zero OVRTX / kitless rendering CI coverage since then, with no
visible signal (the jobs just show "skipped").

The NGC trust boundary is correct (the wheelhouse download needs
`NGC_API_KEY`, which fork PRs cannot access), and this PR keeps it
intact — the `USE_OVPHYSX_WHEELHOUSE` env var from isaac-sim#6314 already
resolves trust per run, and the NGC download step is gated on
`wheelhouse-resource != ''`, so it never executes without credentials.

This PR's own CI (it is a fork PR, and PR runs use the merge-commit
workflow, so it exercises its own fix) established exactly which
coverage is recoverable on the public pip stack:

- **All `isaaclab_ov` (ovrtx) tests pass** with pip-index `ovrtx` +
`ovphysx` — 0 failures.
- **All 562 `isaaclab_ovphysx` test failures are one error**:
`AttributeError: type object 'PhysX' has no attribute 'set_cpu_mode'` —
`ovphysx_manager` now requires ovphysx ≥ 0.5.1, which only exists in the
NGC wheelhouse; the newest public wheel is 0.4.13.

ovrtx does not depend on ovphysx, so the fallback separates them at the
finest granularity each job allows:

- `test-isaaclab-ov` **runs on fork PRs** via the pip fallback with
`exclude-pattern: isaaclab_ovphysx` (file-level — the two packages live
in separate test trees; the shared `filter-pattern: "isaaclab_ov"` only
bundles them by prefix match).
- `test-rendering-correctness-kitless` **runs on fork PRs** with a new
`test-k-expr` input that reaches the per-file pytest subprocesses
spawned by `tools/conftest.py` (param-level: `not ovphysx` — the
golden-image files parametrize physics backends inside each file, so
fork runs keep the `newton + ovrtx` combinations and deselect only the
ovphysx-backed params).
- Trusted runs (same-repo PRs to `develop`, post-merge `develop`) are
byte-for-byte unchanged.

Once ovphysx ≥ 0.5.1 is published to the public pip index, the exclude
and the `-k` deselect can both be dropped and fork PRs regain full
parity.

cc @AntoineRichardisaac-sim#6314's description says "Do not merge; this PR
exists only for CI validation", so flagging in case the fork-PR skip
wasn't meant to reach `develop` in this form at all.

Fixes the coverage gap observed on isaac-sim#6308, where the OVRTX-variant jobs
skip on every attempt.

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
…saac-sim#6197)

# Description

**Part 1 of 5** of a series that splits the (oversized) benchmark
refactor into reviewable, independently-mergeable PRs:

- **Part 1/5 — this PR:** backend-agnostic benchmark *core* under
`isaaclab.test.benchmark`.
- **Part 2/5 (isaac-sim#6198):** unified `runtime.py` + `startup.py` entry
scripts (depends on this PR).
- **Part 3/5 (isaac-sim#6199):** unified `training.py` dispatcher +
`rsl_rl`/`rl_games`/`skrl`/`sb3` adapters (depends on Parts 1–2).
- **Part 4/5 (isaac-sim#6201):** play/inference benchmark.
- **Part 5/5:** removal of the legacy `benchmark_*` / `run_*.sh` /
`utils.py` scripts.

Parts 1–4 are **purely additive**: they add the new suite alongside the
existing scripts, which keep working unchanged. The legacy scripts are
removed only in **Part 5/5**, so downstream consumers (OmniPerf
ingestion, job runners) can migrate at their own pace.

This PR adds the reusable core the entry scripts build on:

- New submodules under `isaaclab.test.benchmark`:
- `capture` — versions / hardware / resources / run-id capture from the
benchmark recorders.
- `metrics` — TensorBoard log parsing, convergence detection, EMA,
mean/std/peak, success-rate tracking.
- `builders` — assemble the schema-v1 `RuntimeBundle` / `TrainingBundle`
/ `StartupBundle`.
  - `stepping` — backend-agnostic random-action stepping loop.
- `profiling` — `cProfile` stats parsing (own/cumulative time, call
counts).
  - `backend_descriptor` — per-RL-library TensorBoard tag descriptors.
- A new `schema` output backend that serializes a benchmark bundle
through the existing `BaseIsaacLabBenchmark` metrics-backend system,
plus multi-backend support (e.g. `--benchmark_backend schema,omniperf`)
via a new `attach_bundle` hook. Single-backend behavior and filenames
are unchanged, so existing benchmarks are unaffected.

Note: the shared GPU/memory recorders gain additive peak rows (`GPU [i]
Memory Used peak`, `System Memory RSS/VMS/USS peak`); every pre-existing
KPI row is unchanged. This is the only change visible in the legacy
scripts' OmniPerf/JSON output.

Builds on the v1.0 benchmark schema merged in isaac-sim#5840. No entry scripts or
docs change here — those land with Parts 2–3.

Fixes # (n/a)

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
(user-facing benchmark docs land with the entry scripts in Parts 2–3)
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
## Summary

- pin the OVPhysX optional runtime to `0.5.2+head.f62c22207c`
- align the daily compatibility job with the tested runtime artifact
- add an OVPhysX changelog fragment

## Testing

- `./isaaclab.sh -p -c "..."` (verified both explicit version
constraints)
- `./isaaclab.sh -p -m pytest tools/changelog/test/test_validate.py`
- `./isaaclab.sh -p tools/changelog/cli.py check develop`
- `./isaaclab.sh -f`
Revisited the solver parameters. Now, the environments consistently use
num_substeps=1.
Tuned also the settings for the DR Legs task, making training 3x faster.

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
## Summary

- Deferred Kit and USD imports from modules loaded during task and
configuration resolution until the runtime functionality requires them.
- Prevented overlapping standalone USD package providers on x86 by
restricting `usd-exchange` to ARM, where `usd-core` is not installed.
- Added a metadata regression test that keeps the standalone USD
providers platform-disjoint.

## Root Cause

The failing installation-training environments loaded incompatible USD
Python bindings in one process, with traces showing both
`pxrInternal_v0_25_5` and `pxrInternal_v0_25_11`. On x86, `usd-core` and
`usd-exchange` both supplied USD/`pxr` components. Their coexistence
made native binding initialization depend on installation and import
order, producing wrapper and converter registration failures.

## Test Plan

- `./isaaclab.sh -p -m pytest
source/isaaclab/test/cli/test_source_package_metadata.py`
- `./isaaclab.sh -f`
- Installation Tests: fresh successful run plus 10 successful reruns,
each passing on x86 and ARM.

## CI Validation

- Fresh run: x86 `84271139083`, ARM `84271139099`
- Reruns 1-5: x86 `84278649544`, `84284392796`, `84297138420`,
`84306527331`, `84317891132`; ARM `84278649480`, `84284392767`,
`84297138393`, `84306527439`, `84317891100`
- Reruns 6-10: x86 `84343375232`, `84356535895`, `84361942197`,
`84373650598`, `84379046431`; ARM `84343375249`, `84356535827`,
`84361942203`, `84373650527`, `84379046460`

---------

Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: hujc <leo.hu.sh@gmail.com>
# Description

Fourbar-pole swingup RL example that uses Kamino. Builds on the core
Kamino changes in isaac-sim#5962

The USD model is added to `newton-assets` in
newton-physics/newton-assets#44

See video for a trained policy. 5s episode -> reset -> 5s episode.

https://github.com/user-attachments/assets/9deb0597-6653-4614-b05f-5f3a03f0ff74

## Checklist
- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------

Co-authored-by: Agon Serifi <agon.serifi@disney.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Antoine RICHARD <antoiner@nvidia.com>
Bumped packages:
- isaaclab: 8.1.2 → 9.0.0
- isaaclab_assets: 0.4.1 → 0.4.2
- isaaclab_ovphysx: 6.1.0 → 6.1.1
- isaaclab_tasks: 8.1.5 → 8.1.6
… utilities (isaac-sim#6334)

# Description

Moves the rigid object and rigid object collection interface test
factories into shared underscore-prefixed utility modules so later parts
can reuse them. Pure code movement with no behavior change and no
ordering content.

Part 1/8 of the series splitting isaac-sim#6248 into independently reviewable
units. isaac-sim#6248 remains open, untouched, as the reference implementation;
this stack was cut from its final tree after a `develop` sync (Kamino
Core, Newton bump, OVPhysX 0.5.1).

## Stack

- **Part 1/8 (this PR)**: isaac-sim#6334 — Extract rigid object interface test
utilities
- Part 2/8: isaac-sim#6335 — Core ordering foundation
- Part 3/8: isaac-sim#6336 — Newton backend
- Part 4/8: isaac-sim#6337 — PhysX backend
- Part 5/8: isaac-sim#6338 — Extract articulation interface test utilities
- Part 6/8: isaac-sim#6339 — OVPhysX backend
- Part 7/8: isaac-sim#6340 — Cross-backend ordering interface tests
- Part 8/8: isaac-sim#6341 — Events, consumers, and documentation

## Type of change

- Test/documentation/refactor change

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package
- [x] My name exists in `CONTRIBUTORS.md`

## Test Plan

- [x] `./isaaclab.sh -p -m pytest
source/isaaclab/test/assets/test_rigid_object_iface.py` -> 1478 passed,
12 xfailed
- [x] `./isaaclab.sh -p -m pytest
source/isaaclab/test/assets/test_rigid_object_collection_iface.py` ->
1902 passed; the 7 failures + 636 errors are pre-existing on `develop`
in the local environment (OVPhysX 0.4.13 wheel vs the 0.5.x binding API
from isaac-sim#6314) — fail-set identical to the `develop` baseline
- [x] `./isaaclab.sh -f` -> all hooks pass

---------

Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
OpenUSD 26.05 fixes a race in UsdPhysicsParsingUtility that could corrupt
the heap (malloc_consolidate(): invalid chunk size / double free) when
parsing a single rigid body with many mesh colliders beneath it, before
the first simulation step (OpenUSD PR isaac-sim#4002 / commit 060715f).

Bumps the kit-less usd-core pin from >=25.11,<26.0 to >=26.5,<27.0 and
updates the metadata guard test (renamed from the USD 25 ABI assertion).
NewtonManager.reset(soft=False) re-finalizes the model and rebuilds the
solver/state, but _initialize_contacts only constructs a new CollisionPipeline
when cls._collision_pipeline is None -- and reset() never nulled it. The stale
pipeline (and its _contacts), still bound to the freed old-model shape_* /
broad-phase candidate_pair device buffers, was then reused against the
freshly-finalized model. Its first eager narrow-phase launch
(narrow_phase_kernel_gjk_mpr) reads freed/mismatched memory, producing
CUDA error 700 (illegal memory access) outside any CUDA graph.

Null _collision_pipeline and _contacts in reset() so initialize_solver()
rebuilds them against the new model. Also invalidate any captured CUDA graph
and defer re-capture to the first step() idle window, so a stale graph can
never be replayed against freed buffers.

Validated on the H2 tablecloth workload (env.sim.reset() poison sequence):
CUDA 700 eliminated, all steps pass, exit 0.
@github-actions github-actions Bot added documentation Improvements or additions to documentation infrastructure asset labels Jul 7, 2026
@pv-nvidia pv-nvidia closed this Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asset bug Something isn't working documentation Improvements or additions to documentation infrastructure isaac-lab

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants